import axios from 'axios'
import {ElMessage} from 'element-plus'
import 'element-plus/theme-chalk/el-message.css'
import {useUserStore} from '@/stores/userStore.js'
import router from '@/router'

const httpInstance = axios.create({
	baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net', // 基地址
	timeout: 5000 // 超时时间
})

// 拦截器
// 请求拦截器
httpInstance.interceptors.request.use(config => {
	// 从pinia获取token数据
	const userStore = useUserStore()
	const token = userStore.userInfo.token
	// 统一注入token
	if (token) {
		config.headers.Authorization = `Bearer ${token}`
	}
	return config
}, e => Promise.reject(e))

// 响应拦截器
httpInstance.interceptors.response.use(res => res.data, e => {
	const userStore = useUserStore()

	// 统一错误提示
	ElMessage({
		type: 'warning',
		message: e.response.data.message
	})

	// 处理401 token失效
	if (e.response.status === 401) {
		// 清空用户数据
		userStore.clearUserInfo()
		// 跳转到登录页
		router.push({path: '/login'})
	}

	return Promise.reject(e)
})

export default httpInstance
